home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / tex / strunk / disk_6 / inputs_1.lzh / inputs / atari / romlig.mf < prev   
Encoding:
Text File  |  1990-08-21  |  8.0 KB  |  167 lines

  1. % This file describes five roman ligatures that begin with `f'
  2. % and puts them in code positions \0013--\0017.
  3.  
  4. %%CS%% Hide f-ligatures: no longer used by TeX, but still available
  5. %%CS%% The change affects the `.tfm', but not the `.gf' or `.pk' files.
  6.  
  7. numeric itc#; % modified italic correction on `f' and `ff'
  8. itc#=if serifs: max(0,flare#-.25u#) else: 1.25u# fi;
  9.  
  10. ligtable "f": %%CS%% "i"=:oct"014", "f"=:oct"013", "l"=:oct"015",
  11.  "'" kern itc#, "?" kern itc#, "!" kern itc#, ")" kern itc#, "]" kern itc#;
  12. ligtable oct"013": %%CS%% "i"=:oct"016", "l"=:oct"017",
  13.  "'" kern itc#, "?" kern itc#, "!" kern itc#, ")" kern itc#, "]" kern itc#;
  14.  
  15. cmchar "The ligature ff";
  16. beginchar(oct"013",10.5u#+2letter_fit#,asc_height#,0);
  17. italcorr asc_height#*slant+if serifs:flare#-.25u# else: 1.25u# fi;
  18. adjust_fit(0,0);
  19. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  20. pos11(stem',0); rt x11r=hround(w-3u+.5stem');
  21. pickup fine.nib; numeric bulb_diam, inner_jut;
  22. if serifs: bulb_diam=hround .8[stem,flare];
  23.  pos2(bulb_diam,0); pos12(bulb_diam,0);
  24.  rt x2r=hround(rt x11r-stem_corr); lft x12l=hround(w-.75u+.5);
  25.  y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo];
  26.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  27.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  28. else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 6.25u;
  29.  pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(w+.75u); fi
  30. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  31. f_stroke(11,12,d,e,f,inner_jut,1.25jut); % right stem, arc, terminal, serif
  32. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
  33. pos3(bar,90); pos4(bar,90);
  34. rt x4=hround(w-1/3u);
  35. if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
  36.  pos4'(bar,90); x4'=x11; y4'=y4;
  37.  filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e;  % bars
  38. else: filldraw stroke z3e--z4e; fi  % bar
  39. penlabels(1,2,3,4,11,12); endchar;
  40.  
  41. cmchar "The ligature fi";
  42. beginchar(oct"014",10u#+2letter_fit#,asc_height#,0);
  43. italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#;
  44. adjust_fit(0,serif_fit#);
  45. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  46. pos11(stem',0); rt x11r=hround(w-2.5u+.5stem');
  47. pos12(stem',0); x11=x12; bot y12=0;
  48. pickup fine.nib; numeric bulb_diam, inner_jut;
  49. if serifs: bulb_diam=hround 1/4[.8[stem,flare],dot_size];
  50.  pos2(bulb_diam,0); x2r=x12r;
  51.  y2+.5bulb_diam=.8[x_height,h+oo]; top y11=x_height+min(oo,serif_drop);
  52.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  53.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  54. else: bulb_diam=max(stem,dot_size);
  55.  pos2(6/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u;
  56.  pickup tiny.nib; pos13(bulb_diam,0); pos14(bulb_diam,90);
  57.  x13=x11-.5; top y14r=min(2x_height,h+1); top y11=x_height;
  58.  if bot y14l-x_height<tiny: y14l:=min(y14r-eps,y11+2tiny); fi
  59.  x13=x14; y13=.5[y14l,y14r]; dot(13,14);  % dot
  60. fi;  % this is the ligature we're drawing
  61. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  62. pickup tiny.nib; filldraw stroke z11e--z12e;  % right stem
  63. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
  64. pos3(bar,90); pos4(bar,90);
  65. if serifs: x4=x11;  % bar will overlap upper right serif
  66.  sloped_serif.l(11,12,d,1/3,jut,min(oo,serif_drop));  % upper right serif
  67.  dish_serif(12,11,e,1/3,inner_jut,f,1/3,jut);  % lower right serif
  68. else: rt x4= hround 5.3u; fi
  69. pickup crisp.nib; filldraw stroke z3e--z4e;  % bar
  70. penlabels(1,2,3,4,11,12,13,14); endchar;
  71.  
  72. cmchar "The ligature fl";
  73. beginchar(oct"015",10u#+2letter_fit#,asc_height#,0);
  74. italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
  75. adjust_fit(0,serif_fit#);
  76. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  77. pos11(stem',0); rt x11r=hround(w-2.5u+.5stem');
  78. pos12(stem',0); x11=x12; bot y12=0; top y11=h;
  79. filldraw stroke z11e--z12e;  % right stem
  80. pickup fine.nib; numeric bulb_diam, inner_jut;
  81. if serifs: bulb_diam=hround .8[stem,flare];
  82.  pos2(bulb_diam,0); x2r=x11r-stem_corr;
  83.  y2+.5bulb_diam=.9[x_height,h+oo];
  84.  sloped_serif.l(11,12,d,1/3,eps,max(serif_drop,oo)); % erase excess at top
  85.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  86.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  87. else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.3u; fi
  88. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  89. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround .5u-1;
  90. pos3(bar,90); pos4(bar,90);
  91. if serifs: x4=x11;
  92.  dish_serif(12,11,e,1/3,inner_jut,f,1/3,jut);  % lower right serif
  93. else: rt x4= hround 5.3u; fi
  94. pickup crisp.nib; filldraw stroke z3e--z4e;  % bar
  95. penlabels(1,2,3,4,11,12); endchar;
  96.  
  97. cmchar "The ligature ffi";
  98. beginchar(oct"016",15u#+4letter_fit#,asc_height#,0);
  99. italcorr asc_height#*slant-serif_fit#+.5if serifs:stem# else:dot_size# fi-2u#;
  100. adjust_fit(0,serif_fit#);
  101. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  102. pos11(stem',0); lft x11l=hround(.5w-.5stem');
  103. pos21(stem',0); rt x21r=hround(w-2.5u+.5stem');
  104. pos22(stem',0); x21=x22; bot y22=0;
  105. pickup fine.nib; numeric bulb_diam, inner_jut;
  106. if serifs: bulb_diam=hround 1/4[.8[stem,flare],dot_size];
  107.  pos2(bulb_diam,0); x2r=x11r-stem_corr;
  108.  pos12(bulb_diam,0); x12r=x21r;
  109.  top y21=x_height+min(oo,serif_drop);
  110.  y2+.5bulb_diam=.8[x_height,h+oo]; y12=y2;
  111.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  112.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  113. else: bulb_diam=max(stem,dot_size);
  114.  pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
  115.  pos12(6/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u);
  116.  pickup tiny.nib; pos23(bulb_diam,0); pos24(bulb_diam,90);
  117.  x23=x21-.5; top y24r=min(2x_height,h+1); top y21=x_height;
  118.  if bot y24l-x_height<tiny: y24l:=min(y24r-eps,y21+2tiny); fi
  119.  x23=x24; y23=.5[y24l,y24r]; dot(23,24); fi  % dot
  120. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  121. f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
  122. pickup tiny.nib; filldraw stroke z21e--z22e;  % right stem
  123. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
  124. pos3(bar,90); pos4(bar,90);
  125. if serifs: x4=x21;  % bar will overlap upper right serif
  126.  sloped_serif.l(21,22,g,1/3,jut,min(oo,serif_drop));  % upper right serif
  127.  dish_serif(22,21,h,1/3,inner_jut,i,1/3,jut);  % lower right serif
  128. else: rt x4=hround(.5w+2.8u); fi
  129. pickup crisp.nib;
  130. if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
  131.  pos4'(bar,90); x4'=x11; y4'=y4;
  132.  filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e;  % bars
  133. else: filldraw stroke z3e--z4e; fi  % bar
  134. penlabels(1,2,3,4,11,12,21,22,23,24); endchar;
  135.  
  136. cmchar "The ligature ffl";
  137. beginchar(oct"017",15u#+4letter_fit#,asc_height#,0);
  138. italcorr asc_height#*slant-serif_fit#+.5stem#-2u#;
  139. adjust_fit(0,serif_fit#);
  140. pickup tiny.nib; pos1(stem',0); lft x1l=hround(2.5u-.5stem');
  141. pos11(stem',0); lft x11l=hround(.5w-.5stem');
  142. pos21(stem',0); rt x21r=hround(w-2.5u+.5stem');
  143. pos22(stem',0); x21=x22; bot y22=0; top y21=h;
  144. filldraw stroke z21e--z22e;  % right stem
  145. pickup fine.nib; numeric bulb_diam, inner_jut;
  146. if serifs: bulb_diam=hround .8[stem,flare];
  147.  pos2(bulb_diam,0); x2r=x11r-stem_corr;
  148.  pos12(bulb_diam,0); x12r=x21r-stem_corr;
  149.  y2+.5bulb_diam=.85[x_height,h+oo]; y12+.5bulb_diam=.9[x_height,h+oo];
  150.  sloped_serif.l(21,22,g,1/3,eps,max(serif_drop,oo)); % erase excess at top
  151.  if rt x1r+jut+.5u+2<=lft x11l-jut: inner_jut=jut;
  152.  else: rt x1r+inner_jut+.5u+2=lft x11l-inner_jut; fi
  153. else: pos2(5/7[vair,flare],90); top y2r=h; rt x2=hround 5.75u;
  154.  pos12(5/7[vair,flare],90); y12=y2; rt x12=hround(.5w+2.8u); fi
  155. f_stroke(1,2,a,b,c,jut,inner_jut); % left stem, arc, terminal, serif
  156. f_stroke(11,12,d,e,f,inner_jut,inner_jut); % middle ditto
  157. pickup crisp.nib; top y3r=top y4r=x_height; lft x3=hround.5u-1;
  158. pos3(bar,90); pos4(bar,90);
  159. if serifs: dish_serif(22,21,h,1/3,inner_jut,i,1/3,jut);  % lower right serif
  160.  pickup crisp.nib; x4=x21;
  161. else: rt x4=hround(.5w+2.8u); fi
  162. if hefty: pos3'(bar,90); x3'-x1=x4-x11; y3'=y3;
  163.  pos4'(bar,90); x4'=x11; y4'=y4;
  164.  filldraw stroke z3e--z3'e; filldraw stroke z4'e--z4e;  % bars
  165. else: filldraw stroke z3e--z4e; fi  % bar
  166. penlabels(1,2,3,4,11,12,21,22); endchar;
  167.